expose-loader

作用:

暴露全局变量为window属性。

API:https://github.com/webpack-contrib/expose-loader

安装:

npm install expose-loader --save-dev

使用:

注意与externals参数配置是不同的:

externals:{
    jquery:"window.$"
}

这样做是为了让以CDN引入的第三方插件直接调用,而不需要重复打包到bundle里。

而expose-loader则是以window属性的方式全局暴露一些方法或对象。对于jquery:

import "expose-loader?$!jquery"; //已安装jquery和expose-loader

这样,在浏览器控制台就可以以window.$的方式调用jquery。也可以这样配置:

rules:[
    {
        test:require.resolve('jquery'),
        use:[
            {
                loader:'expose-loader',
                options:'$'
            }
        ]
    }
]

但,以这种方式处理第三方库没什么意义。更多的我想应该是暴露一些静态配置数据以便共享,比如对象、json:

//config.js

const CONFIG = {
    name:"Geralt"
}

export default CONFIG;
//比如入口文件配置
import 'expose-loader?configData!./config.js';

这样,在其它文件可以通过window.configData来访问。

注意,如果以export default导出,那么window.configData.default才是真正的数据;否则以export {}导出,则window.configData下的属性名也会对应变化。出于这个问题,对于配置数据,以json的方式配置要更好一点:

{
    "name":"Geralt"
}
import 'expose-loader?configData!./config.json';

JSON.stringify(window.configData) === JSON.stringify({name:"Geralt"})

总结:

expose-loader既可以处理第三方库,也可以处理如js、json等,但感觉比较适合将json配置,暴露为window属性。

results matching ""

    No results matching ""